# 多进程锁, 多进程通过Queue来实现进程通信
import time
from threading import Thread, Lock
from multiprocessing import Process, Lock

def save_to_file(index, lock):
    with lock:
        with open("test.log", "a", encoding="utf-8") as f:
            f.write(str(index) + "\n")


# def save_to_queue(index, my_queue):
#     my_queue.put(index)


if __name__ == "__main__":
    process_array = []
    lock = Lock()
#   my_queue = Queue()
    for i in range(10):
        p = Process(target=save_to_file, args=(i, lock))
        # p = Process(target=save_to_queue, args=(i, my_queue))
        process_array.append(p)
        p.start()
    for p in process_array:
        p.join()
    # print("done!")

    # while True:
    #   print(my_queue.get)



# 多线程锁
zero = 0
lock = Lock()

def foo():
    global zero
    for i in range(10**6):
        with lock:
            zero += 1
            zero -= 1

if __name__ == "__main__":
    process_array = []
    for i in range(2):
        p = Thread(target=foo)
        process_array.append(p)
        p.start()
    for p in process_array:
        p.join()

    print(zero)


